gtkarray: memcpy() directly into the GPtrArray
authorTimm Bäder <mail@baedert.org>
Wed, 6 May 2020 08:25:05 +0000 (10:25 +0200)
committerTimm Bäder <mail@baedert.org>
Sun, 10 May 2020 06:44:20 +0000 (08:44 +0200)
gtk/gtkarrayimplprivate.h

index 8a669f2a4091a3e7130cb9423868cb5177c2a347..cd8051373d8cd5768a2a58d3dfdbf4a6428d4c11 100644 (file)
@@ -55,13 +55,9 @@ gtk_array_add (GtkArray *self,
   /* Need to fall back to the GPtrArray */
   if (G_UNLIKELY (!self->ptr_array))
     {
-      guint i;
-
-      self->ptr_array = g_ptr_array_new_full (self->reserved_size, NULL);
-
-      /* Copy elements from stack space to GPtrArray */
-      for (i = 0; i < self->len; i++)
-        g_ptr_array_add (self->ptr_array, self->stack_space[i]);
+      self->ptr_array = g_ptr_array_new_full (self->len + 1, NULL);
+      memcpy (self->ptr_array->pdata, self->stack_space, sizeof (void *) * self->len);
+      self->ptr_array->len = self->len;
     }
 
   g_ptr_array_add (self->ptr_array, element);
@@ -90,12 +86,9 @@ gtk_array_insert (GtkArray *self,
 
   if (G_UNLIKELY (!self->ptr_array))
     {
-      guint i;
-
-      self->ptr_array = g_ptr_array_new_full (self->reserved_size, NULL);
-
-      for (i = 0; i < self->len; i++)
-        g_ptr_array_add (self->ptr_array, self->stack_space[i]);
+      self->ptr_array = g_ptr_array_new_full (self->len + 1, NULL);
+      memcpy (self->ptr_array->pdata, self->stack_space, sizeof (void *) * self->len);
+      self->ptr_array->len = self->len;
     }
 
   g_assert (self->ptr_array);